/**
 * 
 */
package co.edu.uniquindio.logica;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * 
 * esta clase representa la calificacion en la logica del negocio 
 * @author Andres felipe abril
 * @author Luis Enrique Robledo
 *
 */
@Entity
@Table(name="Color")
public class Color implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * representa la llave primaria del color
	 */
	@Id
	private int codigo;
	/**
	 * este  atributo representa el nombre del color
	 */
	private String nombre;
	/**
	 * este metodo representa el R del estandar RGB  de un color
	 */
	private int R;
	/**
	 * este metodo representa el G del estandar RGB de un color
	 */
	private int G;
	/**
	 * este metodo representa el B del estandar RGB de un color
	 */
	private int B; 
	/**
	 * esta relacion representa que un color puede tener asociados una lista de automoviles
	 */
	@OneToMany(mappedBy = "color")
	private List<Automovil> automoviles;
	
	/**
	 * este metodo permite la creacion de un  color
	 * @param codigo
	 * @param r
	 * @param g
	 * @param b
	 */
	public Color(String nombre,int codigo, int r, int g , int b)
	{
		this.codigo=codigo;
		this.nombre=nombre;
		this.R=r;
		this.G=g;
		this.B=b;
	}
    public Color()
    {
    	
    }
	/**
	 * este metodo me permite obtener el codigo de un color
	 * @return el codigo
	 */
	public int getCodigo() {
		return codigo;
	}

	/**
	 * este metodo me permite modificar el codigo de un color 
	 * @param codigo the codigo to set
	 */
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	/**
	 * este metodo me permite obtener el R del sistema de colores estandares de un color
	 * @return the r
	 */
	public int getR() {
		return R;
	}

	/**
	 * este metodo me permite modificar el R de un color
	 * @param el nuevo r de un color
	 */
	public void setR(int r) {
		R = r;
	}

	/**
	 * este metodo me permite obtener el G del sistema de colores estandares de un color
	 * @return the g
	 */
	public int getG() {
		return G;
	}

	/**
	 * este metodo me permite modificar el G de un color
	 * @param el nuevo g de un color
	 */
	public void setG(int g) {
		G = g;
	}

	/**
	 * este metodo me permite obtener el B del sistema de colores estandares de un color
	 * @return el B
	 */
	public int getB() {
		return B;
	}

	/**
	 * este metodo me permite modificar el B de un color
	 * @param el nuevo B
	 */
	public void setB(int b) {
		B = b;
	}
	/**
	 * este metodo me  permite obtener la lista de automoviles asociados aa un color
	 * @return la lista de  automoviles
	 */
	public List<Automovil> getAutomoviles() {
		return automoviles;
	}
	/**
	 * este metodo me ppermite modificar la lista de automoviles asociados a un color
	 * @param la nueva  lista de automoviles 
	 */
	public void setAutomoviles(List<Automovil> automoviles) {
		this.automoviles = automoviles;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + codigo;
		return result;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Color other = (Color) obj;
		if (codigo != other.codigo)
			return false;
		return true;
	}
	/**
	 * este metodo me permite obtener el nombre de un color
	 * @return el nombre de un color
	 */
	public String getNombre() {
		return nombre;
	}
	/**
	 * este metodo me permite modificar el nombre de un color
	 * @param el nuevo nombre del color
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return nombre;
	}
	

}
